home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / bumpmap.s < prev    next >
Text File  |  1997-01-31  |  30KB  |  1,970 lines

  1. BumpMap:
  2.  
  3.  tst.b smoothbumps
  4.  bne SmoothMap
  5.  
  6.  move.w ConstCol,d0
  7.  move.w (a1,d0.w*2),a2
  8.  move.w #0,a2
  9.  
  10.  tst.w above
  11.  beq bumpthefloor
  12.  
  13.  move.l #24*128,d0
  14.  divs dst,d0
  15.  subq #1,d0
  16.  blt.s ordinary
  17.  beq.s OneBelow
  18.  subq.w #2,d0
  19.  blt TwoBelow
  20.  beq ThreeBelow
  21.  subq.w #2,d0
  22.  blt FourBelow
  23.  beq FiveBelow
  24.  subq.w #2,d0
  25.  blt SixBelow
  26.  beq SevenBelow
  27.  subq.w #2,d0
  28.  blt EightBelow
  29.  beq NineBelow
  30.  subq #2,d0
  31.  blt TenBelow
  32.  beq ElevenBelow
  33.  bra TwelveBelow
  34.  rts
  35.   
  36. *****************************
  37.  
  38. OneBelow:
  39.  moveq #0,d0
  40.  dbra d7,.BumpAcross
  41.  
  42. .BumpBefore:
  43.  and.w d1,d5
  44.  move.b (a0,d5.w*4),d0
  45.  blt.s .BumpBeforeHigh
  46.  move.w (a1,d0.w*2),104*4(a3)
  47.  moveq #0,d0
  48. .BumpBeforeHigh:
  49.  move.w (a1,d0.w*2),(a3)
  50.  addq #4,a3
  51.  add.w a4,d3
  52.  addx.l d6,d5
  53.  dbcs d7,.BumpAcross
  54.  dbcc d7,.BumpBefore
  55.  bcc.s .Bumppast1
  56.  add.w #256,d5 
  57.  bra.s .Bumppast1
  58.  
  59. .BumpAcross:
  60.  and.w d1,d5
  61.  move.b (a0,d5.w*4),d0
  62.  blt.s .BumpAcrossHigh
  63.  move.w (a1,d0.w*2),104*4(a3)
  64.  moveq #0,d0
  65. .BumpAcrossHigh:
  66.  move.w (a1,d0.w*2),(a3)
  67.  addq #4,a3
  68.  add.w a4,d3
  69.  addx.l d2,d5
  70.  dbcs d7,.BumpAcross
  71.  dbcc d7,.BumpBefore
  72.  bcc.s .Bumppast1
  73.  add.w #256,d5 
  74. .Bumppast1:
  75.  
  76.  move.w d4,d7
  77.  bne.s .notdoneyet
  78.  rts
  79. .notdoneyet:
  80.  
  81.  cmp.w #32,d7
  82.  ble.s .notoowide
  83.  move.w #32,d7
  84. .notoowide
  85.  sub.w d7,d4  
  86.  addq #4,a3
  87.  
  88.  dbra d7,.BumpAcross
  89.  CACHE_FREEZE_ON d2
  90.  rts
  91.  
  92. *****************************
  93.  
  94. TwoBelow:
  95.  moveq #0,d0
  96.  dbra d7,.BumpAcross
  97.  
  98. .BumpBefore:
  99.  and.w d1,d5
  100.  move.b (a0,d5.w*4),d0
  101.  blt.s .BumpBeforeHigh
  102.  move.w (a1,d0.w*2),104*8(a3)
  103.  moveq #0,d0
  104. .BumpBeforeHigh:
  105.  move.w (a1,d0.w*2),(a3)
  106.  addq #4,a3
  107.  add.w a4,d3
  108.  addx.l d6,d5
  109.  dbcs d7,.BumpAcross
  110.  dbcc d7,.BumpBefore
  111.  bcc.s .Bumppast1
  112.  add.w #256,d5 
  113.  bra.s .Bumppast1
  114.  
  115. .BumpAcross:
  116.  and.w d1,d5
  117.  move.b (a0,d5.w*4),d0
  118.  blt.s .BumpAcrossHigh
  119.  move.w (a1,d0.w*2),104*8(a3)
  120.  move.w a2,104*4(a3)
  121.  moveq #0,d0
  122. .BumpAcrossHigh:
  123.  move.w (a1,d0.w*2),(a3)
  124.  addq #4,a3
  125.  add.w a4,d3
  126.  addx.l d2,d5
  127.  dbcs d7,.BumpAcross
  128.  dbcc d7,.BumpBefore
  129.  bcc.s .Bumppast1
  130.  add.w #256,d5 
  131. .Bumppast1:
  132.  
  133.  move.w d4,d7
  134.  bne.s .notdoneyet
  135.  rts
  136. .notdoneyet:
  137.  
  138.  cmp.w #32,d7
  139.  ble.s .notoowide
  140.  move.w #32,d7
  141. .notoowide
  142.  sub.w d7,d4  
  143.  addq #4,a3
  144.  
  145.  dbra d7,.BumpAcross
  146.  CACHE_FREEZE_ON d2
  147.  rts
  148. *****************************
  149.  
  150. ThreeBelow:
  151.  moveq #0,d0
  152.  dbra d7,.BumpAcross
  153.  
  154. .BumpBefore:
  155.  and.w d1,d5
  156.  move.b (a0,d5.w*4),d0
  157.  blt.s .BumpBeforeHigh
  158.  move.w (a1,d0.w*2),104*12(a3)
  159.  move.w a2,104*8(a3)
  160.  move.w a2,104*4(a3)
  161.  moveq #0,d0
  162. .BumpBeforeHigh:
  163.  move.w (a1,d0.w*2),(a3)
  164.  addq #4,a3
  165.  add.w a4,d3
  166.  addx.l d6,d5
  167.  dbcs d7,.BumpAcross
  168.  dbcc d7,.BumpBefore
  169.  bcc.s .Bumppast1
  170.  add.w #256,d5 
  171.  bra.s .Bumppast1
  172.  
  173. .BumpAcross:
  174.  and.w d1,d5
  175.  move.b (a0,d5.w*4),d0
  176.  blt.s .BumpAcrossHigh
  177.  move.w (a1,d0.w*2),104*12(a3)
  178.  move.w a2,104*8(a3)
  179.  move.w a2,104*4(a3)
  180.  moveq #0,d0
  181. .BumpAcrossHigh:
  182.  move.w (a1,d0.w*2),(a3)
  183.  addq #4,a3
  184.  add.w a4,d3
  185.  addx.l d2,d5
  186.  dbcs d7,.BumpAcross
  187.  dbcc d7,.BumpBefore
  188.  bcc.s .Bumppast1
  189.  add.w #256,d5 
  190. .Bumppast1:
  191.  
  192.  move.w d4,d7
  193.  bne.s .notdoneyet
  194.  rts
  195. .notdoneyet:
  196.  
  197.  cmp.w #32,d7
  198.  ble.s .notoowide
  199.  move.w #32,d7
  200. .notoowide
  201.  sub.w d7,d4  
  202.  addq #4,a3
  203.  
  204.  dbra d7,.BumpAcross
  205.  CACHE_FREEZE_ON d2
  206.  rts
  207. *****************************
  208.  
  209. FourBelow:
  210.  moveq #0,d0
  211.  dbra d7,.BumpAcross
  212.  
  213. .BumpBefore:
  214.  and.w d1,d5
  215.  move.b (a0,d5.w*4),d0
  216.  blt.s .BumpBeforeHigh
  217.  move.w (a1,d0.w*2),104*16(a3)
  218.  move.w a2,104*12(a3)
  219.  move.w a2,104*8(a3)
  220.  move.w a2,104*4(a3)
  221.  moveq #0,d0
  222. .BumpBeforeHigh:
  223.  move.w (a1,d0.w*2),(a3)
  224.  addq #4,a3
  225.  add.w a4,d3
  226.  addx.l d6,d5
  227.  dbcs d7,.BumpAcross
  228.  dbcc d7,.BumpBefore
  229.  bcc.s .Bumppast1
  230.  add.w #256,d5 
  231.  bra.s .Bumppast1
  232.  
  233. .BumpAcross:
  234.  and.w d1,d5
  235.  move.b (a0,d5.w*4),d0
  236.  blt.s .BumpAcrossHigh
  237.  move.w (a1,d0.w*2),104*16(a3)
  238.  move.w a2,104*12(a3)
  239.  move.w a2,104*8(a3)
  240.  move.w a2,104*4(a3)
  241.  moveq #0,d0
  242. .BumpAcrossHigh:
  243.  move.w (a1,d0.w*2),(a3)
  244.  addq #4,a3
  245.  add.w a4,d3
  246.  addx.l d2,d5
  247.  dbcs d7,.BumpAcross
  248.  dbcc d7,.BumpBefore
  249.  bcc.s .Bumppast1
  250.  add.w #256,d5 
  251. .Bumppast1:
  252.  
  253.  move.w d4,d7
  254.  bne.s .notdoneyet
  255.  rts
  256. .notdoneyet:
  257.  
  258.  cmp.w #32,d7
  259.  ble.s .notoowide
  260.  move.w #32,d7
  261. .notoowide
  262.  sub.w d7,d4  
  263.  addq #4,a3
  264.  
  265.  dbra d7,.BumpAcross
  266.  CACHE_FREEZE_ON d2
  267.  rts
  268. *****************************
  269.  
  270. FiveBelow:
  271.  moveq #0,d0
  272.  dbra d7,.BumpAcross
  273.  
  274. .BumpBefore:
  275.  and.w d1,d5
  276.  move.b (a0,d5.w*4),d0
  277.  blt.s .BumpBeforeHigh
  278.  move.w (a1,d0.w*2),104*20(a3)
  279.  move.w a2,104*16(a3)
  280.  move.w a2,104*12(a3)
  281.  move.w a2,104*8(a3)
  282.  move.w a2,104*4(a3)
  283.  moveq #0,d0
  284. .BumpBeforeHigh:
  285.  move.w (a1,d0.w*2),(a3)
  286.  addq #4,a3
  287.  add.w a4,d3
  288.  addx.l d6,d5
  289.  dbcs d7,.BumpAcross
  290.  dbcc d7,.BumpBefore
  291.  bcc.s .Bumppast1
  292.  add.w #256,d5 
  293.  bra.s .Bumppast1
  294.  
  295. .BumpAcross:
  296.  and.w d1,d5
  297.  move.b (a0,d5.w*4),d0
  298.  blt.s .BumpAcrossHigh
  299.  move.w (a1,d0.w*2),104*20(a3)
  300.  move.w a2,104*16(a3)
  301.  move.w a2,104*12(a3)
  302.  move.w a2,104*8(a3)
  303.  move.w a2,104*4(a3)
  304.  moveq #0,d0
  305. .BumpAcrossHigh:
  306.  move.w (a1,d0.w*2),(a3)
  307.  addq #4,a3
  308.  add.w a4,d3
  309.  addx.l d2,d5
  310.  dbcs d7,.BumpAcross
  311.  dbcc d7,.BumpBefore
  312.  bcc.s .Bumppast1
  313.  add.w #256,d5 
  314. .Bumppast1:
  315.  
  316.  move.w d4,d7
  317.  bne.s .notdoneyet
  318.  rts
  319. .notdoneyet:
  320.  
  321.  cmp.w #32,d7
  322.  ble.s .notoowide
  323.  move.w #32,d7
  324. .notoowide
  325.  sub.w d7,d4  
  326.  addq #4,a3
  327.  
  328.  dbra d7,.BumpAcross
  329.  CACHE_FREEZE_ON d2
  330.  rts
  331. *****************************
  332.  
  333. SixBelow:
  334.  moveq #0,d0
  335.  dbra d7,.BumpAcross
  336.  
  337. .BumpBefore:
  338.  and.w d1,d5
  339.  move.b (a0,d5.w*4),d0
  340.  blt.s .BumpBeforehigh
  341.  move.w (a1,d0.w*2),104*24(a3)
  342.  move.w a2,104*20(a3)
  343.  move.w a2,104*16(a3)
  344.  move.w a2,104*12(a3)
  345.  move.w a2,104*8(a3)
  346.  move.w a2,104*4(a3)
  347.  moveq #0,d0
  348. .BumpBeforehigh:
  349.  move.w (a1,d0.w*2),(a3)
  350.  addq #4,a3
  351.  add.w a4,d3
  352.  addx.l d6,d5
  353.  dbcs d7,.BumpAcross
  354.  dbcc d7,.BumpBefore
  355.  bcc.s .Bumppast1
  356.  add.w #256,d5 
  357.  bra.s .Bumppast1
  358.  
  359. .BumpAcross:
  360.  and.w d1,d5
  361.  move.b (a0,d5.w*4),d0
  362.  blt.s .BumpAcrossHigh
  363.  move.w (a1,d0.w*2),104*24(a3)
  364.  move.w a2,104*20(a3)
  365.  move.w a2,104*16(a3)
  366.  move.w a2,104*12(a3)
  367.  move.w a2,104*8(a3)
  368.  move.w a2,104*4(a3)
  369.  moveq #0,d0
  370. .BumpAcrossHigh:
  371.  move.w (a1,d0.w*2),(a3)
  372.  addq #4,a3
  373.  add.w a4,d3
  374.  addx.l d2,d5
  375.  dbcs d7,.BumpAcross
  376.  dbcc d7,.BumpBefore
  377.  bcc.s .Bumppast1
  378.  add.w #256,d5 
  379. .Bumppast1:
  380.  
  381.  move.w d4,d7
  382.  bne.s .notdoneyet
  383.  rts
  384. .notdoneyet:
  385.  
  386.  cmp.w #32,d7
  387.  ble.s .notoowide
  388.  move.w #32,d7
  389. .notoowide
  390.  sub.w d7,d4  
  391.  addq #4,a3
  392.  
  393.  dbra d7,.BumpAcross
  394.  CACHE_FREEZE_ON d2
  395.  rts
  396. *****************************
  397.  
  398. SevenBelow:
  399.  moveq #0,d0
  400.  dbra d7,.BumpAcross
  401.  
  402. .BumpBefore:
  403.  and.w d1,d5
  404.  move.b (a0,d5.w*4),d0
  405.  blt.s .BumpBeforeHigh
  406.  move.w (a1,d0.w*2),104*28(a3)
  407.  move.w a2,104*24(a3)
  408.  move.w a2,104*20(a3)
  409.  move.w a2,104*16(a3)
  410.  move.w a2,104*12(a3)
  411.  move.w a2,104*8(a3)
  412.  move.w a2,104*4(a3)
  413.  moveq #0,d0
  414. .BumpBeforeHigh:
  415.  move.w (a1,d0.w*2),(a3)
  416.  addq #4,a3
  417.  add.w a4,d3
  418.  addx.l d6,d5
  419.  dbcs d7,.BumpAcross
  420.  dbcc d7,.BumpBefore
  421.  bcc.s .Bumppast1
  422.  add.w #256,d5 
  423.  bra.s .Bumppast1
  424.  
  425. .BumpAcross:
  426.  and.w d1,d5
  427.  move.b (a0,d5.w*4),d0
  428.  blt.s .BumpAcrossHigh
  429.  move.w (a1,d0.w*2),104*28(a3)
  430.  move.w a2,104*24(a3)
  431.  move.w a2,104*20(a3)
  432.  move.w a2,104*16(a3)
  433.  move.w a2,104*12(a3)
  434.  move.w a2,104*8(a3)
  435.  move.w a2,104*4(a3)
  436.  moveq #0,d0
  437. .BumpAcrossHigh:
  438.  move.w (a1,d0.w*2),(a3)
  439.  addq #4,a3
  440.  add.w a4,d3
  441.  addx.l d2,d5
  442.  dbcs d7,.BumpAcross
  443.  dbcc d7,.BumpBefore
  444.  bcc.s .Bumppast1
  445.  add.w #256,d5 
  446. .Bumppast1:
  447.  
  448.  move.w d4,d7
  449.  bne.s .notdoneyet
  450.  rts
  451. .notdoneyet:
  452.  
  453.  cmp.w #32,d7
  454.  ble.s .notoowide
  455.  move.w #32,d7
  456. .notoowide
  457.  sub.w d7,d4  
  458.  addq #4,a3
  459.  
  460.  dbra d7,.BumpAcross
  461.  CACHE_FREEZE_ON d2
  462.  rts
  463. *****************************
  464.  
  465. EightBelow:
  466.  moveq #0,d0
  467.  dbra d7,.BumpAcross
  468.  
  469. .BumpBefore:
  470.  and.w d1,d5
  471.  move.b (a0,d5.w*4),d0
  472.  blt.s .BumpBeforeHigh
  473.  move.w (a1,d0.w*2),104*32(a3)
  474.  move.w a2,104*28(a3)
  475.  move.w a2,104*24(a3)
  476.  move.w a2,104*20(a3)
  477.  move.w a2,104*16(a3)
  478.  move.w a2,104*12(a3)
  479.  move.w a2,104*8(a3)
  480.  move.w a2,104*4(a3)
  481.  moveq #0,d0
  482. .BumpBeforeHigh:
  483.  move.w (a1,d0.w*2),(a3)
  484.  addq #4,a3
  485.  add.w a4,d3
  486.  addx.l d6,d5
  487.  dbcs d7,.BumpAcross
  488.  dbcc d7,.BumpBefore
  489.  bcc.s .Bumppast1
  490.  add.w #256,d5 
  491.  bra.s .Bumppast1
  492.  
  493. .BumpAcross:
  494.  and.w d1,d5
  495.  move.b (a0,d5.w*4),d0
  496.  blt.s .BumpAcrossHigh
  497.  move.w (a1,d0.w*2),104*32(a3)
  498.  move.w a2,104*28(a3)
  499.  move.w a2,104*24(a3)
  500.  move.w a2,104*20(a3)
  501.  move.w a2,104*16(a3)
  502.  move.w a2,104*12(a3)
  503.  move.w a2,104*8(a3)
  504.  move.w a2,104*4(a3)
  505.  moveq #0,d0
  506. .BumpAcrossHigh:
  507.  move.w (a1,d0.w*2),(a3)
  508.  addq #4,a3
  509.  add.w a4,d3
  510.  addx.l d2,d5
  511.  dbcs d7,.BumpAcross
  512.  dbcc d7,.BumpBefore
  513.  bcc.s .Bumppast1
  514.  add.w #256,d5 
  515. .Bumppast1:
  516.  
  517.  move.w d4,d7
  518.  bne.s .notdoneyet
  519.  rts
  520. .notdoneyet:
  521.  
  522.  cmp.w #32,d7
  523.  ble.s .notoowide
  524.  move.w #32,d7
  525. .notoowide
  526.  sub.w d7,d4  
  527.  addq #4,a3
  528.  
  529.  dbra d7,.BumpAcross
  530.  CACHE_FREEZE_ON d2
  531.  rts
  532.  
  533. *****************************
  534.  
  535. NineBelow:
  536.  moveq #0,d0
  537.  dbra d7,.BumpAcross
  538.  
  539. .BumpBefore:
  540.  and.w d1,d5
  541.  move.b (a0,d5.w*4),d0
  542.  blt.s .BumpBeforeHigh
  543.  move.w (a1,d0.w*2),104*36(a3)
  544.  move.w a2,104*32(a3)
  545.  move.w a2,104*28(a3)
  546.  move.w a2,104*24(a3)
  547.  move.w a2,104*20(a3)
  548.  move.w a2,104*16(a3)
  549.  move.w a2,104*12(a3)
  550.  move.w a2,104*8(a3)
  551.  move.w a2,104*4(a3)
  552.  moveq #0,d0
  553. .BumpBeforeHigh:
  554.  move.w (a1,d0.w*2),(a3)
  555.  addq #4,a3
  556.  add.w a4,d3
  557.  addx.l d6,d5
  558.  dbcs d7,.BumpAcross
  559.  dbcc d7,.BumpBefore
  560.  bcc.s .Bumppast1
  561.  add.w #256,d5 
  562.  bra.s .Bumppast1
  563.  
  564. .BumpAcross:
  565.  and.w d1,d5
  566.  move.b (a0,d5.w*4),d0
  567.  blt.s .BumpAcrossHigh
  568.  move.w (a1,d0.w*2),104*36(a3)
  569.  move.w a2,104*32(a3)
  570.  move.w a2,104*28(a3)
  571.  move.w a2,104*24(a3)
  572.  move.w a2,104*20(a3)
  573.  move.w a2,104*16(a3)
  574.  move.w a2,104*12(a3)
  575.  move.w a2,104*8(a3)
  576.  move.w a2,104*4(a3)
  577.  moveq #0,d0
  578. .BumpAcrossHigh:
  579.  move.w (a1,d0.w*2),(a3)
  580.  addq #4,a3
  581.  add.w a4,d3
  582.  addx.l d2,d5
  583.  dbcs d7,.BumpAcross
  584.  dbcc d7,.BumpBefore
  585.  bcc.s .Bumppast1
  586.  add.w #256,d5 
  587. .Bumppast1:
  588.  
  589.  move.w d4,d7
  590.  bne.s .notdoneyet
  591.  rts
  592. .notdoneyet:
  593.  
  594.  cmp.w #32,d7
  595.  ble.s .notoowide
  596.  move.w #32,d7
  597. .notoowide
  598.  sub.w d7,d4  
  599.  addq #4,a3
  600.  
  601.  dbra d7,.BumpAcross
  602.  CACHE_FREEZE_ON d2
  603.  rts
  604. *****************************
  605.  
  606. TenBelow:
  607.  moveq #0,d0
  608.  dbra d7,.BumpAcross
  609.  
  610. .BumpBefore:
  611.  and.w d1,d5
  612.  move.b (a0,d5.w*4),d0
  613.  blt.s .BumpBeforeHigh
  614.  move.w (a1,d0.w*2),104*40(a3)
  615.  move.w a2,104*36(a3)
  616.  move.w a2,104*32(a3)
  617.  move.w a2,104*28(a3)
  618.  move.w a2,104*24(a3)
  619.  move.w a2,104*20(a3)
  620.  move.w a2,104*16(a3)
  621.  move.w a2,104*12(a3)
  622. ; move.w a2,104*8(a3)
  623. ; move.w a2,104*4(a3)
  624.  moveq #0,d0
  625. .BumpBeforeHigh:
  626.  move.w (a1,d0.w*2),(a3)
  627.  addq #4,a3
  628.  add.w a4,d3
  629.  addx.l d6,d5
  630.  dbcs d7,.BumpAcross
  631.  dbcc d7,.BumpBefore
  632.  bcc.s .Bumppast1
  633.  add.w #256,d5 
  634.  bra.s .Bumppast1
  635.  
  636. .BumpAcross:
  637.  and.w d1,d5
  638.  move.b (a0,d5.w*4),d0
  639.  blt.s .BumpAcrossHigh
  640.  move.w (a1,d0.w*2),104*40(a3)
  641.  move.w a2,104*36(a3)
  642.  move.w a2,104*32(a3)
  643.  move.w a2,104*28(a3)
  644.  move.w a2,104*24(a3)
  645.  move.w a2,104*20(a3)
  646.  move.w a2,104*16(a3)
  647.  move.w a2,104*12(a3)
  648. ; move.w a2,104*8(a3)
  649. ; move.w a2,104*4(a3)
  650.  moveq #0,d0
  651. .BumpAcrossHigh:
  652.  move.w (a1,d0.w*2),(a3)
  653.  addq #4,a3
  654.  add.w a4,d3
  655.  addx.l d2,d5
  656.  dbcs d7,.BumpAcross
  657.  dbcc d7,.BumpBefore
  658.  bcc.s .Bumppast1
  659.  add.w #256,d5 
  660. .Bumppast1:
  661.  
  662.  move.w d4,d7
  663.  bne.s .notdoneyet
  664.  rts
  665. .notdoneyet:
  666.  
  667.  cmp.w #32,d7
  668.  ble.s .notoowide
  669.  move.w #32,d7
  670. .notoowide
  671.  sub.w d7,d4  
  672.  addq #4,a3
  673.  
  674.  dbra d7,.BumpAcross
  675.  CACHE_FREEZE_ON d2
  676.  rts
  677. *****************************
  678.  
  679. ElevenBelow:
  680.  moveq #0,d0
  681.  dbra d7,.BumpAcross
  682.  
  683. .BumpBefore:
  684.  and.w d1,d5
  685.  move.b (a0,d5.w*4),d0
  686.  blt.s .BumpBeforeHigh
  687.  move.w (a1,d0.w*2),104*44(a3)
  688.  move.w a2,104*40(a3)
  689.  move.w a2,104*36(a3)
  690.  move.w a2,104*32(a3)
  691.  move.w a2,104*28(a3)
  692.  move.w a2,104*24(a3)
  693.  move.w a2,104*20(a3)
  694.  move.w a2,104*16(a3)
  695. ; move.w a2,104*12(a3)
  696. ; move.w a2,104*8(a3)
  697. ; move.w a2,104*4(a3)
  698.  moveq #0,d0
  699. .BumpBeforeHigh:
  700.  move.w (a1,d0.w*2),(a3)
  701.  addq #4,a3
  702.  add.w a4,d3
  703.  addx.l d6,d5
  704.  dbcs d7,.BumpAcross
  705.  dbcc d7,.BumpBefore
  706.  bcc.s .Bumppast1
  707.  add.w #256,d5 
  708.  bra.s .Bumppast1
  709.  
  710. .BumpAcross:
  711.  and.w d1,d5
  712.  move.b (a0,d5.w*4),d0
  713.  blt.s .BumpAcrossHigh
  714.  move.w (a1,d0.w*2),104*44(a3)
  715.  move.w a2,104*40(a3)
  716.  move.w a2,104*36(a3)
  717.  move.w a2,104*32(a3)
  718.  move.w a2,104*28(a3)
  719.  move.w a2,104*24(a3)
  720.  move.w a2,104*20(a3)
  721.  move.w a2,104*16(a3)
  722. ; move.w a2,104*12(a3)
  723. ; move.w a2,104*8(a3)
  724. ; move.w a2,104*4(a3)
  725.  moveq #0,d0
  726. .BumpAcrossHigh:
  727.  move.w (a1,d0.w*2),(a3)
  728.  addq #4,a3
  729.  add.w a4,d3
  730.  addx.l d2,d5
  731.  dbcs d7,.BumpAcross
  732.  dbcc d7,.BumpBefore
  733.  bcc.s .Bumppast1
  734.  add.w #256,d5 
  735. .Bumppast1:
  736.  
  737.  move.w d4,d7
  738.  bne.s .notdoneyet
  739.  rts
  740. .notdoneyet:
  741.  
  742.  cmp.w #32,d7
  743.  ble.s .notoowide
  744.  move.w #32,d7
  745. .notoowide
  746.  sub.w d7,d4  
  747.  addq #4,a3
  748.  
  749.  dbra d7,.BumpAcross
  750.  CACHE_FREEZE_ON d2
  751.  rts
  752. *****************************
  753.  
  754. TwelveBelow:
  755.  moveq #0,d0
  756.  dbra d7,.BumpAcross
  757.  
  758. .BumpBefore:
  759.  and.w d1,d5
  760.  move.b (a0,d5.w*4),d0
  761.  blt.s .BumpBeforeHigh
  762.  move.w (a1,d0.w*2),104*48(a3)
  763.  move.w a2,104*44(a3)
  764.  move.w a2,104*40(a3)
  765.  move.w a2,104*36(a3)
  766.  move.w a2,104*32(a3)
  767.  move.w a2,104*28(a3)
  768.  move.w a2,104*24(a3)
  769.  move.w a2,104*20(a3)
  770. ; move.w a2,104*16(a3)
  771. ; move.w a2,104*12(a3)
  772. ; move.w a2,104*8(a3)
  773. ; move.w a2,104*4(a3)
  774.  moveq #0,d0
  775. .BumpBeforeHigh:
  776.  move.w (a1,d0.w*2),(a3)
  777.  addq #4,a3
  778.  add.w a4,d3
  779.  addx.l d6,d5
  780.  dbcs d7,.BumpAcross
  781.  dbcc d7,.BumpBefore
  782.  bcc.s .Bumppast1
  783.  add.w #256,d5 
  784.  bra.s .Bumppast1
  785.  
  786. .BumpAcross:
  787.  and.w d1,d5
  788.  move.b (a0,d5.w*4),d0
  789.  blt.s .BumpAcrossHigh
  790.  move.w (a1,d0.w*2),104*48(a3)
  791.  move.w a2,104*44(a3)
  792.  move.w a2,104*40(a3)
  793.  move.w a2,104*36(a3)
  794.  move.w a2,104*32(a3)
  795.  move.w a2,104*28(a3)
  796.  move.w a2,104*24(a3)
  797.  move.w a2,104*20(a3)
  798. ; move.w a2,104*16(a3)
  799. ; move.w a2,104*12(a3)
  800. ; move.w a2,104*8(a3)
  801. ; move.w a2,104*4(a3)
  802.  moveq #0,d0
  803. .BumpAcrossHigh:
  804.  move.w (a1,d0.w*2),(a3)
  805.  addq #4,a3
  806.  add.w a4,d3
  807.  addx.l d2,d5
  808.  dbcs d7,.BumpAcross
  809.  dbcc d7,.BumpBefore
  810.  bcc.s .Bumppast1
  811.  add.w #256,d5 
  812. .Bumppast1:
  813.  
  814.  move.w d4,d7
  815.  bne.s .notdoneyet
  816.  rts
  817. .notdoneyet:
  818.  
  819.  cmp.w #32,d7
  820.  ble.s .notoowide
  821.  move.w #32,d7
  822. .notoowide
  823.  sub.w d7,d4  
  824.  addq #4,a3
  825.  
  826.  dbra d7,.BumpAcross
  827.  CACHE_FREEZE_ON d2
  828.  rts
  829.  
  830.  
  831. bumpthefloor:
  832.  move.l #14*128,d0
  833.  divs dst,d0
  834.  subq.w #1,d0
  835.  blt ordinary
  836.  beq.s OneAbove
  837.  subq.w #2,d0
  838.  blt TwoAbove
  839.  beq ThreeAbove
  840.  subq.w #2,d0
  841.  blt FourAbove
  842.  beq FiveAbove
  843.  subq.w #2,d0
  844.  blt SixAbove
  845.  beq SevenAbove
  846.  
  847.  bra EightAbove
  848.  
  849.  moveq #0,d0
  850.  rts
  851.  
  852. *****************************
  853.  
  854. OneAbove:
  855.  moveq #0,d0
  856.  dbra d7,.BumpAcross
  857.  
  858. .BumpBefore:
  859.  and.w d1,d5
  860.  move.b (a0,d5.w*4),d0
  861.  blt.s .BumpBeforeHigh
  862.  move.w (a1,d0.w*2),-104*4(a3)
  863.  
  864. .BumpBeforeHigh:
  865.  move.w (a1,d0.w*2),(a3)
  866.  addq #4,a3
  867.  add.w a4,d3
  868.  addx.l d6,d5
  869.  dbcs d7,.BumpAcross
  870.  dbcc d7,.BumpBefore
  871.  bcc.s .Bumppast1
  872.  add.w #256,d5 
  873.  bra.s .Bumppast1
  874.  
  875. .BumpAcross:
  876.  and.w d1,d5
  877.  move.b (a0,d5.w*4),d0
  878.  blt.s .BumpAcrossHigh
  879.  move.w (a1,d0.w*2),-104*4(a3)
  880. .BumpAcrossHigh:
  881.  move.w (a1,d0.w*2),(a3)
  882.  addq #4,a3
  883.  add.w a4,d3
  884.  addx.l d2,d5
  885.  dbcs d7,.BumpAcross
  886.  dbcc d7,.BumpBefore
  887.  bcc.s .Bumppast1
  888.  add.w #256,d5 
  889. .Bumppast1:
  890.  
  891.  move.w d4,d7
  892.  bne.s .notdoneyet
  893.  rts
  894. .notdoneyet:
  895.  
  896.  cmp.w #32,d7
  897.  ble.s .notoowide
  898.  move.w #32,d7
  899. .notoowide
  900.  sub.w d7,d4  
  901.  addq #4,a3
  902.  
  903.  dbra d7,.BumpAcross
  904.  CACHE_FREEZE_ON d2
  905.  rts
  906.  
  907. *****************************
  908.  
  909. TwoAbove:
  910.  moveq #0,d0
  911.  dbra d7,.BumpAcross
  912.  
  913. .BumpBefore:
  914.  and.w d1,d5
  915.  move.b (a0,d5.w*4),d0
  916.  blt.s .BumpBeforeHigh
  917.  move.w (a1,d0.w*2),-104*8(a3)
  918.  move.w a2,-104*4(a3)
  919. .BumpBeforeHigh:
  920.  move.w (a1,d0.w*2),(a3)
  921.  addq #4,a3
  922.  add.w a4,d3
  923.  addx.l d6,d5
  924.  dbcs d7,.BumpAcross
  925.  dbcc d7,.BumpBefore
  926.  bcc.s .Bumppast1
  927.  add.w #256,d5 
  928.  bra.s .Bumppast1
  929.  
  930. .BumpAcross:
  931.  and.w d1,d5
  932.  move.b (a0,d5.w*4),d0
  933.  blt.s .BumpAcrossHigh
  934.  move.w (a1,d0.w*2),-104*8(a3)
  935.  move.w a2,-104*4(a3)
  936. .BumpAcrossHigh:
  937.  move.w (a1,d0.w*2),(a3)
  938.  addq #4,a3
  939.  add.w a4,d3
  940.  addx.l d2,d5
  941.  dbcs d7,.BumpAcross
  942.  dbcc d7,.BumpBefore
  943.  bcc.s .Bumppast1
  944.  add.w #256,d5 
  945. .Bumppast1:
  946.  
  947.  move.w d4,d7
  948.  bne.s .notdoneyet
  949.  rts
  950. .notdoneyet:
  951.  
  952.  cmp.w #32,d7
  953.  ble.s .notoowide
  954.  move.w #32,d7
  955. .notoowide
  956.  sub.w d7,d4  
  957.  addq #4,a3
  958.  
  959.  dbra d7,.BumpAcross
  960.  CACHE_FREEZE_ON d2
  961.  rts
  962. *****************************
  963.  
  964. ThreeAbove:
  965.  moveq #0,d0
  966.  dbra d7,.BumpAcross
  967.  
  968. .BumpBefore:
  969.  and.w d1,d5
  970.  move.b (a0,d5.w*4),d0
  971.  blt.s .BumpBeforeHigh
  972.  move.w (a1,d0.w*2),-104*12(a3)
  973.  move.w a2,-104*8(a3)
  974.  move.w a2,-104*4(a3)
  975. .BumpBeforeHigh:
  976.  move.w (a1,d0.w*2),(a3)
  977.  addq #4,a3
  978.  add.w a4,d3
  979.  addx.l d6,d5
  980.  dbcs d7,.BumpAcross
  981.  dbcc d7,.BumpBefore
  982.  bcc.s .Bumppast1
  983.  add.w #256,d5 
  984.  bra.s .Bumppast1
  985.  
  986. .BumpAcross:
  987.  and.w d1,d5
  988.  move.b (a0,d5.w*4),d0
  989.  blt.s .BumpAcrossHigh
  990.  move.w (a1,d0.w*2),-104*12(a3)
  991.  move.w a2,-104*8(a3)
  992.  move.w a2,-104*4(a3)
  993. .BumpAcrossHigh:
  994.  move.w (a1,d0.w*2),(a3)
  995.  addq #4,a3
  996.  add.w a4,d3
  997.  addx.l d2,d5
  998.  dbcs d7,.BumpAcross
  999.  dbcc d7,.BumpBefore
  1000.  bcc.s .Bumppast1
  1001.  add.w #256,d5 
  1002. .Bumppast1:
  1003.  
  1004.  move.w d4,d7
  1005.  bne.s .notdoneyet
  1006.  rts
  1007. .notdoneyet:
  1008.  
  1009.  cmp.w #32,d7
  1010.  ble.s .notoowide
  1011.  move.w #32,d7
  1012. .notoowide
  1013.  sub.w d7,d4  
  1014.  addq #4,a3
  1015.  
  1016.  dbra d7,.BumpAcross
  1017.  CACHE_FREEZE_ON d2
  1018.  rts
  1019. *****************************
  1020.  
  1021. FourAbove:
  1022.  moveq #0,d0
  1023.  dbra d7,.BumpAcross
  1024.  
  1025. .BumpBefore:
  1026.  and.w d1,d5
  1027.  move.b (a0,d5.w*4),d0
  1028.  blt.s .BumpBeforeHigh
  1029.  move.w (a1,d0.w*2),-104*16(a3)
  1030.  move.w a2,-104*12(a3)
  1031.  move.w a2,-104*8(a3)
  1032.  move.w a2,-104*4(a3)
  1033. .BumpBeforeHigh:
  1034.  move.w (a1,d0.w*2),(a3)
  1035.  addq #4,a3
  1036.  add.w a4,d3
  1037.  addx.l d6,d5
  1038.  dbcs d7,.BumpAcross
  1039.  dbcc d7,.BumpBefore
  1040.  bcc.s .Bumppast1
  1041.  add.w #256,d5 
  1042.  bra.s .Bumppast1
  1043.  
  1044. .BumpAcross:
  1045.  and.w d1,d5
  1046.  move.b (a0,d5.w*4),d0
  1047.  blt.s .BumpAcrossHigh
  1048.  move.w (a1,d0.w*2),-104*16(a3)
  1049.  move.w a2,-104*12(a3)
  1050.  move.w a2,-104*8(a3)
  1051.  move.w a2,-104*4(a3)
  1052. .BumpAcrossHigh:
  1053.  move.w (a1,d0.w*2),(a3)
  1054.  addq #4,a3
  1055.  add.w a4,d3
  1056.  addx.l d2,d5
  1057.  dbcs d7,.BumpAcross
  1058.  dbcc d7,.BumpBefore
  1059.  bcc.s .Bumppast1
  1060.  add.w #256,d5 
  1061. .Bumppast1:
  1062.  
  1063.  move.w d4,d7
  1064.  bne.s .notdoneyet
  1065.  rts
  1066. .notdoneyet:
  1067.  
  1068.  cmp.w #32,d7
  1069.  ble.s .notoowide
  1070.  move.w #32,d7
  1071. .notoowide
  1072.  sub.w d7,d4  
  1073.  addq #4,a3
  1074.  
  1075.  dbra d7,.BumpAcross
  1076.  CACHE_FREEZE_ON d2
  1077.  rts
  1078. *****************************
  1079.  
  1080. FiveAbove:
  1081.  moveq #0,d0
  1082.  dbra d7,.BumpAcross
  1083.  
  1084. .BumpBefore:
  1085.  and.w d1,d5
  1086.  move.b (a0,d5.w*4),d0
  1087.  blt.s .BumpBeforeHigh
  1088.  move.w (a1,d0.w*2),-104*20(a3)
  1089.  move.w a2,-104*16(a3)
  1090.  move.w a2,-104*12(a3)
  1091.  move.w a2,-104*8(a3)
  1092.  move.w a2,-104*4(a3)
  1093. .BumpBeforeHigh:
  1094.  move.w (a1,d0.w*2),(a3)
  1095.  addq #4,a3
  1096.  add.w a4,d3
  1097.  addx.l d6,d5
  1098.  dbcs d7,.BumpAcross
  1099.  dbcc d7,.BumpBefore
  1100.  bcc.s .Bumppast1
  1101.  add.w #256,d5 
  1102.  bra.s .Bumppast1
  1103.  
  1104. .BumpAcross:
  1105.  and.w d1,d5
  1106.  move.b (a0,d5.w*4),d0
  1107.  blt.s .BumpAcrossHigh
  1108.  move.w (a1,d0.w*2),-104*20(a3)
  1109.  move.w a2,-104*16(a3)
  1110.  move.w a2,-104*12(a3)
  1111.  move.w a2,-104*8(a3)
  1112.  move.w a2,-104*4(a3)
  1113. .BumpAcrossHigh:
  1114.  move.w (a1,d0.w*2),(a3)
  1115.  addq #4,a3
  1116.  add.w a4,d3
  1117.  addx.l d2,d5
  1118.  dbcs d7,.BumpAcross
  1119.  dbcc d7,.BumpBefore
  1120.  bcc.s .Bumppast1
  1121.  add.w #256,d5 
  1122. .Bumppast1:
  1123.  
  1124.  move.w d4,d7
  1125.  bne.s .notdoneyet
  1126.  rts
  1127. .notdoneyet:
  1128.  
  1129.  cmp.w #32,d7
  1130.  ble.s .notoowide
  1131.  move.w #32,d7
  1132. .notoowide
  1133.  sub.w d7,d4  
  1134.  addq #4,a3
  1135.  
  1136.  dbra d7,.BumpAcross
  1137.  CACHE_FREEZE_ON d2
  1138.  rts
  1139.  
  1140. *****************************
  1141.  
  1142. SixAbove:
  1143.  moveq #0,d0
  1144.  dbra d7,.BumpAcross
  1145.  
  1146. .BumpBefore:
  1147.  and.w d1,d5
  1148.  move.b (a0,d5.w*4),d0
  1149.  blt.s .BumpBeforeHigh
  1150.  move.w (a1,d0.w*2),-104*24(a3)
  1151.  move.w a2,-104*20(a3)
  1152.  move.w a2,-104*16(a3)
  1153.  move.w a2,-104*12(a3)
  1154.  move.w a2,-104*8(a3)
  1155.  move.w a2,-104*4(a3)
  1156. .BumpBeforeHigh:
  1157.  move.w (a1,d0.w*2),(a3)
  1158.  addq #4,a3
  1159.  add.w a4,d3
  1160.  addx.l d6,d5
  1161.  dbcs d7,.BumpAcross
  1162.  dbcc d7,.BumpBefore
  1163.  bcc.s .Bumppast1
  1164.  add.w #256,d5 
  1165.  bra.s .Bumppast1
  1166.  
  1167. .BumpAcross:
  1168.  and.w d1,d5
  1169.  move.b (a0,d5.w*4),d0
  1170.  blt.s .BumpAcrossHigh
  1171.  move.w (a1,d0.w*2),-104*24(a3)
  1172.  move.w a2,-104*20(a3)
  1173.  move.w a2,-104*16(a3)
  1174.  move.w a2,-104*12(a3)
  1175.  move.w a2,-104*8(a3)
  1176.  move.w a2,-104*4(a3)
  1177. .BumpAcrossHigh:
  1178.  move.w (a1,d0.w*2),(a3)
  1179.  addq #4,a3
  1180.  add.w a4,d3
  1181.  addx.l d2,d5
  1182.  dbcs d7,.BumpAcross
  1183.  dbcc d7,.BumpBefore
  1184.  bcc.s .Bumppast1
  1185.  add.w #256,d5 
  1186. .Bumppast1:
  1187.  
  1188.  move.w d4,d7
  1189.  bne.s .notdoneyet
  1190.  rts
  1191. .notdoneyet:
  1192.  
  1193.  cmp.w #32,d7
  1194.  ble.s .notoowide
  1195.  move.w #32,d7
  1196. .notoowide
  1197.  sub.w d7,d4  
  1198.  addq #4,a3
  1199.  
  1200.  dbra d7,.BumpAcross
  1201.  CACHE_FREEZE_ON d2
  1202.  rts
  1203. *****************************
  1204.  
  1205. SevenAbove:
  1206.  moveq #0,d0
  1207.  dbra d7,.BumpAcross
  1208.  
  1209. .BumpBefore:
  1210.  and.w d1,d5
  1211.  move.b (a0,d5.w*4),d0
  1212.  blt.s .BumpBeforeHigh
  1213.  move.w (a1,d0.w*2),-104*28(a3)
  1214.  move.w a2,-104*24(a3)
  1215.  move.w a2,-104*20(a3)
  1216.  move.w a2,-104*16(a3)
  1217.  move.w a2,-104*12(a3)
  1218.  move.w a2,-104*8(a3)
  1219.  move.w a2,-104*4(a3)
  1220. .BumpBeforeHigh:
  1221.  move.w (a1,d0.w*2),(a3)
  1222.  addq #4,a3
  1223.  add.w a4,d3
  1224.  addx.l d6,d5
  1225.  dbcs d7,.BumpAcross
  1226.  dbcc d7,.BumpBefore
  1227.  bcc.s .Bumppast1
  1228.  add.w #256,d5 
  1229.  bra.s .Bumppast1
  1230.  
  1231. .BumpAcross:
  1232.  and.w d1,d5
  1233.  move.b (a0,d5.w*4),d0
  1234.  blt.s .BumpAcrossHigh
  1235.  move.w (a1,d0.w*2),-104*28(a3)
  1236.  move.w a2,-104*24(a3)
  1237.  move.w a2,-104*20(a3)
  1238.  move.w a2,-104*16(a3)
  1239.  move.w a2,-104*12(a3)
  1240.  move.w a2,-104*8(a3)
  1241.  move.w a2,-104*4(a3)
  1242. .BumpAcrossHigh:
  1243.  move.w (a1,d0.w*2),(a3)
  1244.  addq #4,a3
  1245.  add.w a4,d3
  1246.  addx.l d2,d5
  1247.  dbcs d7,.BumpAcross
  1248.  dbcc d7,.BumpBefore
  1249.  bcc.s .Bumppast1
  1250.  add.w #256,d5 
  1251. .Bumppast1:
  1252.  
  1253.  move.w d4,d7
  1254.  bne.s .notdoneyet
  1255.  rts
  1256. .notdoneyet:
  1257.  
  1258.  cmp.w #32,d7
  1259.  ble.s .notoowide
  1260.  move.w #32,d7
  1261. .notoowide
  1262.  sub.w d7,d4  
  1263.  addq #4,a3
  1264.  
  1265.  dbra d7,.BumpAcross
  1266.  CACHE_FREEZE_ON d2
  1267.  rts
  1268. *****************************
  1269.  
  1270. EightAbove:
  1271.  moveq #0,d0
  1272.  dbra d7,.BumpAcross
  1273.  
  1274. .BumpBefore:
  1275.  and.w d1,d5
  1276.  move.b (a0,d5.w*4),d0
  1277.  blt.s .BumpBeforeHigh
  1278.  move.w (a1,d0.w*2),-104*32(a3)
  1279.  move.w a2,-104*28(a3)
  1280.  move.w a2,-104*24(a3)
  1281.  move.w a2,-104*20(a3)
  1282.  move.w a2,-104*16(a3)
  1283.  move.w a2,-104*12(a3)
  1284.  move.w a2,-104*8(a3)
  1285.  move.w a2,-104*4(a3)
  1286. .BumpBeforeHigh:
  1287.  move.w (a1,d0.w*2),(a3)
  1288.  addq #4,a3
  1289.  add.w a4,d3
  1290.  addx.l d6,d5
  1291.  dbcs d7,.BumpAcross
  1292.  dbcc d7,.BumpBefore
  1293.  bcc.s .Bumppast1
  1294.  add.w #256,d5 
  1295.  bra.s .Bumppast1
  1296.  
  1297. .BumpAcross:
  1298.  and.w d1,d5
  1299.  move.b (a0,d5.w*4),d0
  1300.  blt.s .BumpAcrossHigh
  1301.  move.w (a1,d0.w*2),-104*32(a3)
  1302.  move.w a2,-104*28(a3)
  1303.  move.w a2,-104*24(a3)
  1304.  move.w a2,-104*20(a3)
  1305.  move.w a2,-104*16(a3)
  1306.  move.w a2,-104*12(a3)
  1307.  move.w a2,-104*8(a3)
  1308.  move.w a2,-104*4(a3)
  1309. .BumpAcrossHigh:
  1310.  move.w (a1,d0.w*2),(a3)
  1311.  addq #4,a3
  1312.  add.w a4,d3
  1313.  addx.l d2,d5
  1314.  dbcs d7,.BumpAcross
  1315.  dbcc d7,.BumpBefore
  1316.  bcc.s .Bumppast1
  1317.  add.w #256,d5 
  1318. .Bumppast1:
  1319.  
  1320.  move.w d4,d7
  1321.  bne.s .notdoneyet
  1322.  rts
  1323. .notdoneyet:
  1324.  
  1325.  cmp.w #32,d7
  1326.  ble.s .notoowide
  1327.  move.w #32,d7
  1328. .notoowide
  1329.  sub.w d7,d4  
  1330.  addq #4,a3
  1331.  
  1332.  dbra d7,.BumpAcross
  1333.  CACHE_FREEZE_ON d2
  1334.  rts
  1335.  
  1336. SmoothMap:
  1337.  
  1338.  move.w #0,a2
  1339.  
  1340.  tst.w above
  1341.  beq smooththefloor
  1342.  
  1343.  move.l #14*128,d0
  1344.  divs dst,d0
  1345.  subq #1,d0
  1346.  blt ordinary
  1347.  beq.s OneBelowS
  1348.  subq.w #2,d0
  1349.  blt TwoBelowS
  1350.  beq ThreeBelowS
  1351.  subq.w #2,d0
  1352.  blt FourBelowS
  1353.  beq FiveBelowS
  1354.  subq.w #2,d0
  1355.  blt SixBelowS
  1356.  beq SevenBelowS
  1357. ; bra EightBelowS
  1358.  rts
  1359.   
  1360. *****************************
  1361.  
  1362. OneBelowS:
  1363.  moveq #0,d0
  1364.  dbra d7,.BumpAcross
  1365.  
  1366. .BumpBefore:
  1367.  and.w d1,d5
  1368.  move.b (a0,d5.w*4),d0
  1369.  blt.s .BumpBeforeHigh
  1370.  move.w (a1,d0.w*2),104*4(a3)
  1371.   
  1372. .BumpBeforeHigh:
  1373.  move.w (a1,d0.w*2),(a3)
  1374.  addq #4,a3
  1375.  add.w a4,d3
  1376.  addx.l d6,d5
  1377.  dbcs d7,.BumpAcross
  1378.  dbcc d7,.BumpBefore
  1379.  bcc.s .Bumppast1
  1380.  add.w #256,d5 
  1381.  bra.s .Bumppast1
  1382.  
  1383. .BumpAcross:
  1384.  and.w d1,d5
  1385.  move.b (a0,d5.w*4),d0
  1386.  blt.s .BumpAcrossHigh
  1387.  move.w (a1,d0.w*2),104*4(a3)
  1388.  
  1389. .BumpAcrossHigh:
  1390.  move.w (a1,d0.w*2),(a3)
  1391.  addq #4,a3
  1392.  add.w a4,d3
  1393.  addx.l d2,d5
  1394.  dbcs d7,.BumpAcross
  1395.  dbcc d7,.BumpBefore
  1396.  bcc.s .Bumppast1
  1397.  add.w #256,d5 
  1398. .Bumppast1:
  1399.  
  1400.  move.w d4,d7
  1401.  bne.s .notdoneyet
  1402.  rts
  1403. .notdoneyet:
  1404.  
  1405.  cmp.w #32,d7
  1406.  ble.s .notoowide
  1407.  move.w #32,d7
  1408. .notoowide
  1409.  sub.w d7,d4  
  1410.  addq #4,a3
  1411.  
  1412.  dbra d7,.BumpAcross
  1413.  
  1414.  CACHE_FREEZE_ON d2
  1415.  rts
  1416.  
  1417. *****************************
  1418.  
  1419. TwoBelowS:
  1420.  moveq #0,d0
  1421.  dbra d7,.BumpAcross
  1422.  
  1423. .BumpBefore:
  1424.  and.w d1,d5
  1425.  move.b (a0,d5.w*4),d0
  1426.  blt.s .BumpBeforeHigh
  1427.  
  1428.  move.w (a1,d0.w*2),a2
  1429.  lsr.b #1,d0
  1430.  bcc.s .BBHH
  1431.  move.w a2,104*8(a3)
  1432.  
  1433. .BBHH 
  1434.  move.w a2,104*4(a3)
  1435.  
  1436. .BumpBeforeHigh:
  1437. .BBbumped
  1438.  move.w (a1,d0.w*2),(a3)
  1439.  addq #4,a3
  1440.  add.w a4,d3
  1441.  addx.l d6,d5
  1442.  dbcs d7,.BumpAcross
  1443.  dbcc d7,.BumpBefore
  1444.  bcc.s .Bumppast1
  1445.  add.w #256,d5 
  1446.  bra.s .Bumppast1
  1447.  
  1448. .BumpAcross:
  1449.  and.w d1,d5
  1450.  move.b (a0,d5.w*4),d0
  1451.  blt.s .BumpAcrossHigh
  1452.  move.w (a1,d0.w*2),a2
  1453.  lsr.b #1,d0
  1454.  bcc.s .BAHH
  1455.  move.w a2,104*8(a3)
  1456.  
  1457. .BAHH 
  1458.  move.w a2,104*4(a3)
  1459. .BumpAcrossHigh:
  1460. .BAbumped
  1461.  move.w (a1,d0.w*2),(a3)
  1462.  addq #4,a3
  1463.  add.w a4,d3
  1464.  addx.l d2,d5
  1465.  dbcs d7,.BumpAcross
  1466.  dbcc d7,.BumpBefore
  1467.  bcc.s .Bumppast1
  1468.  add.w #256,d5 
  1469. .Bumppast1:
  1470.  
  1471.  move.w d4,d7
  1472.  bne.s .notdoneyet
  1473.  rts
  1474. .notdoneyet:
  1475.  
  1476.  cmp.w #32,d7
  1477.  ble.s .notoowide
  1478.  move.w #32,d7
  1479. .notoowide
  1480.  sub.w d7,d4  
  1481.  addq #4,a3
  1482.  
  1483.  dbra d7,.BumpAcross
  1484.  CACHE_FREEZE_ON d2
  1485.  rts
  1486. *****************************
  1487.  
  1488. ThreeBelowS:
  1489.  moveq #0,d0
  1490.  dbra d7,.BumpAcross
  1491.  
  1492. .BumpBefore:
  1493.  and.w d1,d5
  1494.  move.b (a0,d5.w*4),d0
  1495.  blt.s .BumpBeforeHigh
  1496.  move.w (a1,d0.w*2),a2
  1497.  lsr.b #1,d0
  1498.  bcc.s .BBL
  1499.  
  1500.  move.w a2,104*12(a3)
  1501.  
  1502. .BBL:
  1503.  move.w a2,104*8(a3)
  1504.  move.w a2,104*4(a3)
  1505.  bra.s .BBB
  1506.  
  1507. .BumpBeforeHigh:
  1508.  move.w (a1,d0.w*2),a2
  1509.  lsr.b #1,d0
  1510.  bcc.s .BBB
  1511.  move.w a2,104*4(a3)
  1512.  
  1513. .BBB:
  1514.  move.w a2,(a3)
  1515.  addq #4,a3
  1516.  add.w a4,d3
  1517.  addx.l d6,d5
  1518.  dbcs d7,.BumpAcross
  1519.  dbcc d7,.BumpBefore
  1520.  bcc.s .Bumppast1
  1521.  add.w #256,d5 
  1522.  bra.s .Bumppast1
  1523.  
  1524. .BumpAcross:
  1525.  and.w d1,d5
  1526.  move.b (a0,d5.w*4),d0
  1527.  blt.s .BumpAcrossHigh
  1528.  
  1529.  move.w (a1,d0.w*2),a2
  1530.  lsr.b #1,d0
  1531.  bcc.s .BAL
  1532.  
  1533.  move.w a2,104*12(a3)
  1534.  
  1535. .BAL:
  1536.  move.w a2,104*8(a3)
  1537.  move.w a2,104*4(a3)
  1538.  bra.s .BAB
  1539.  
  1540. .BumpAcrossHigh:
  1541.  move.w (a1,d0.w*2),a2
  1542.  lsr.b #1,d0
  1543.  bcc.s .BAB
  1544.  move.w a2,104*4(a3)
  1545.  
  1546. .BAB:
  1547.  move.w a2,(a3)
  1548.  
  1549.  addq #4,a3
  1550.  add.w a4,d3
  1551.  addx.l d2,d5
  1552.  dbcs d7,.BumpAcross
  1553.  dbcc d7,.BumpBefore
  1554.  bcc.s .Bumppast1
  1555.  add.w #256,d5 
  1556. .Bumppast1:
  1557.  
  1558.  move.w d4,d7
  1559.  bne.s .notdoneyet
  1560.  rts
  1561. .notdoneyet:
  1562.  
  1563.  cmp.w #32,d7
  1564.  ble.s .notoowide
  1565.  move.w #32,d7
  1566. .notoowide
  1567.  sub.w d7,d4  
  1568.  addq #4,a3
  1569.  
  1570.  dbra d7,.BumpAcross
  1571.  CACHE_FREEZE_ON d2
  1572.  rts
  1573.  
  1574. *****************************
  1575.  
  1576. FourBelowS:
  1577.  moveq #0,d0
  1578.  dbra d7,.BumpAcross
  1579.  
  1580. .BumpBefore:
  1581.  and.w d1,d5
  1582.  move.b (a0,d5.w*4),d0
  1583.  blt.s .BumpBeforeHigh
  1584.  move.w (a1,d0.w*2),a2
  1585.  lsr.b #1,d0
  1586.  bcc.s .BBL
  1587.  
  1588.  move.w a2,104*16(a3)
  1589.  
  1590. .BBL:
  1591.  move.w a2,104*12(a3)
  1592.  move.w a2,104*8(a3)
  1593.  move.w a2,104*4(a3)
  1594.  bra.s .BBB
  1595.  
  1596. .BumpBeforeHigh:
  1597.  move.w (a1,d0.w*2),a2
  1598.  lsr.b #1,d0
  1599.  bcc.s .BBB
  1600.  move.w a2,104*4(a3)
  1601.  
  1602. .BBB:
  1603.  move.w a2,(a3)
  1604.  addq #4,a3
  1605.  add.w a4,d3
  1606.  addx.l d6,d5
  1607.  dbcs d7,.BumpAcross
  1608.  dbcc d7,.BumpBefore
  1609.  bcc.s .Bumppast1
  1610.  add.w #256,d5 
  1611.  bra.s .Bumppast1
  1612.  
  1613. .BumpAcross:
  1614.  and.w d1,d5
  1615.  move.b (a0,d5.w*4),d0
  1616.  blt.s .BumpAcrossHigh
  1617.  
  1618.  move.w (a1,d0.w*2),a2
  1619.  lsr.b #1,d0
  1620.  bcc.s .BAL
  1621.  
  1622.  move.w a2,104*16(a3)
  1623.  
  1624. .BAL:
  1625.  move.w a2,104*12(a3)
  1626.  move.w a2,104*8(a3)
  1627.  move.w a2,104*4(a3)
  1628.  bra.s .BAB
  1629.  
  1630. .BumpAcrossHigh:
  1631.  move.w (a1,d0.w*2),a2
  1632.  lsr.b #1,d0
  1633.  bcc.s .BAB
  1634.  move.w a2,104*4(a3)
  1635.  
  1636. .BAB:
  1637.  move.w a2,(a3)
  1638.  
  1639.  addq #4,a3
  1640.  add.w a4,d3
  1641.  addx.l d2,d5
  1642.  dbcs d7,.BumpAcross
  1643.  dbcc d7,.BumpBefore
  1644.  bcc.s .Bumppast1
  1645.  add.w #256,d5 
  1646. .Bumppast1:
  1647.  
  1648.  move.w d4,d7
  1649.  bne.s .notdoneyet
  1650.  rts
  1651. .notdoneyet:
  1652.  
  1653.  cmp.w #32,d7
  1654.  ble.s .notoowide
  1655.  move.w #32,d7
  1656. .notoowide
  1657.  sub.w d7,d4  
  1658.  addq #4,a3
  1659.  
  1660.  dbra d7,.BumpAcross
  1661.  CACHE_FREEZE_ON d2
  1662.  rts
  1663.  
  1664. *****************************
  1665.  
  1666. FiveBelowS:
  1667.  moveq #0,d0
  1668.  dbra d7,.BumpAcross
  1669.  
  1670. .BumpBefore:
  1671.  and.w d1,d5
  1672.  move.b (a0,d5.w*4),d0
  1673.  blt.s .BumpBeforeHigh
  1674.  move.w (a1,d0.w*2),a2
  1675.  lsr.b #1,d0
  1676.  bcc.s .BBL
  1677.  
  1678.  move.w a2,104*20(a3)
  1679.  
  1680. .BBL:
  1681.  move.w a2,104*16(a3)
  1682.  move.w a2,104*12(a3)
  1683.  move.w a2,104*8(a3)
  1684.  move.w a2,104*4(a3)
  1685.  bra.s .BBB
  1686.  
  1687. .BumpBeforeHigh:
  1688.  move.w (a1,d0.w*2),a2
  1689.  lsr.b #1,d0
  1690.  bcc.s .BBB
  1691.  move.w a2,104*8(a3)
  1692.  move.w a2,104*4(a3)
  1693.  
  1694. .BBB:
  1695.  move.w a2,(a3)
  1696.  addq #4,a3
  1697.  add.w a4,d3
  1698.  addx.l d6,d5
  1699.  dbcs d7,.BumpAcross
  1700.  dbcc d7,.BumpBefore
  1701.  bcc.s .Bumppast1
  1702.  add.w #256,d5 
  1703.  bra.s .Bumppast1
  1704.  
  1705. .BumpAcross:
  1706.  and.w d1,d5
  1707.  move.b (a0,d5.w*4),d0
  1708.  blt.s .BumpAcrossHigh
  1709.  
  1710.  move.w (a1,d0.w*2),a2
  1711.  lsr.b #1,d0
  1712.  bcc.s .BAL
  1713.  
  1714.  move.w a2,104*20(a3)
  1715.  
  1716. .BAL:
  1717.  move.w a2,104*16(a3)
  1718.  move.w a2,104*12(a3)
  1719.  move.w a2,104*8(a3)
  1720.  move.w a2,104*4(a3)
  1721.  bra.s .BAB
  1722.  
  1723. .BumpAcrossHigh:
  1724.  move.w (a1,d0.w*2),a2
  1725.  lsr.b #1,d0
  1726.  bcc.s .BAB
  1727.  move.w a2,104*8(a3)
  1728.  move.w a2,104*4(a3)
  1729.  
  1730. .BAB:
  1731.  move.w a2,(a3)
  1732.  
  1733.  addq #4,a3
  1734.  add.w a4,d3
  1735.  addx.l d2,d5
  1736.  dbcs d7,.BumpAcross
  1737.  dbcc d7,.BumpBefore
  1738.  bcc.s .Bumppast1
  1739.  add.w #256,d5 
  1740. .Bumppast1:
  1741.  
  1742.  move.w d4,d7
  1743.  bne.s .notdoneyet
  1744.  rts
  1745. .notdoneyet:
  1746.  
  1747.  cmp.w #32,d7
  1748.  ble.s .notoowide
  1749.  move.w #32,d7
  1750. .notoowide
  1751.  sub.w d7,d4  
  1752.  addq #4,a3
  1753.  
  1754.  dbra d7,.BumpAcross
  1755. tstend:
  1756.  CACHE_FREEZE_ON d2
  1757.  rts
  1758.  
  1759. *****************************
  1760.  
  1761. SixBelowS:
  1762.  moveq #0,d0
  1763.  dbra d7,.BumpAcross
  1764.  
  1765. .BumpBefore:
  1766.  and.w d1,d5
  1767.  move.b (a0,d5.w*4),d0
  1768.  blt.s .BumpBeforeHigh
  1769.  move.w (a1,d0.w*2),a2
  1770.  lsr.b #1,d0
  1771.  bcc.s .BBL
  1772.  
  1773.  move.w a2,104*24(a3)
  1774.  move.w a2,104*20(a3)
  1775.  
  1776. .BBL:
  1777.  move.w a2,104*16(a3)
  1778.  move.w a2,104*12(a3)
  1779.  move.w a2,104*8(a3)
  1780.  move.w a2,104*4(a3)
  1781.  bra.s .BBB
  1782.  
  1783. .BumpBeforeHigh:
  1784.  move.w (a1,d0.w*2),a2
  1785.  lsr.b #1,d0
  1786.  bcc.s .BBB
  1787.  move.w a2,104*8(a3)
  1788.  move.w a2,104*4(a3)
  1789.  
  1790. .BBB:
  1791.  move.w a2,(a3)
  1792.  addq #4,a3
  1793.  add.w a4,d3
  1794.  addx.l d6,d5
  1795.  dbcs d7,.BumpAcross
  1796.  dbcc d7,.BumpBefore
  1797.  bcc.s .Bumppast1
  1798.  add.w #256,d5 
  1799.  bra.s .Bumppast1
  1800.  
  1801. .BumpAcross:
  1802.  and.w d1,d5
  1803.  move.b (a0,d5.w*4),d0
  1804.  blt.s .BumpAcrossHigh
  1805.  
  1806.  move.w (a1,d0.w*2),a2
  1807.  lsr.b #1,d0
  1808.  bcc.s .BAL
  1809.  
  1810.  move.w a2,104*24(a3)
  1811.  move.w a2,104*20(a3)
  1812. .BAL:
  1813.  move.w a2,104*16(a3)
  1814.  move.w a2,104*12(a3)
  1815.  move.w a2,104*8(a3)
  1816.  move.w a2,104*4(a3)
  1817.  bra.s .BAB
  1818.  
  1819. .BumpAcrossHigh:
  1820.  move.w (a1,d0.w*2),a2
  1821.  lsr.b #1,d0
  1822.  bcc.s .BAB
  1823.  move.w a2,104*8(a3)
  1824.  move.w a2,104*4(a3)
  1825.  
  1826. .BAB:
  1827.  move.w a2,(a3)
  1828.  
  1829.  addq #4,a3
  1830.  add.w a4,d3
  1831.  addx.l d2,d5
  1832.  dbcs d7,.BumpAcross
  1833.  dbcc d7,.BumpBefore
  1834.  bcc.s .Bumppast1
  1835.  add.w #256,d5 
  1836. .Bumppast1:
  1837.  
  1838.  move.w d4,d7
  1839.  bne.s .notdoneyet
  1840.  rts
  1841. .notdoneyet:
  1842.  
  1843.  cmp.w #32,d7
  1844.  ble.s .notoowide
  1845.  move.w #32,d7
  1846. .notoowide
  1847.  sub.w d7,d4  
  1848.  addq #4,a3
  1849.  
  1850.  dbra d7,.BumpAcross
  1851.  CACHE_FREEZE_ON d2
  1852.  rts
  1853.  
  1854. SevenBelowS:
  1855.  moveq #0,d0
  1856.  dbra d7,.BumpAcross
  1857.  
  1858. .BumpBefore:
  1859.  and.w d1,d5
  1860.  move.b (a0,d5.w*4),d0
  1861.  blt.s .BumpBeforeHigh
  1862.  move.w (a1,d0.w*2),a2
  1863.  lsr.b #1,d0
  1864.  bcc.s .BBL
  1865.  
  1866.  move.w a2,104*28(a3)
  1867.  move.w a2,104*24(a3)
  1868. .BBL:
  1869.  move.w a2,104*20(a3)
  1870.  move.w a2,104*16(a3)
  1871.  move.w a2,104*12(a3)
  1872.  move.w a2,104*8(a3)
  1873.  move.w a2,104*4(a3)
  1874.  bra.s .BBB
  1875.  
  1876. .BumpBeforeHigh:
  1877.  move.w (a1,d0.w*2),a2
  1878.  lsr.b #1,d0
  1879.  bcc.s .BBB
  1880.  move.w a2,104*8(a3)
  1881.  move.w a2,104*4(a3)
  1882.  
  1883. .BBB:
  1884.  move.w a2,(a3)
  1885.  addq #4,a3
  1886.  add.w a4,d3
  1887.  addx.l d6,d5
  1888.  dbcs d7,.BumpAcross
  1889.  dbcc d7,.BumpBefore
  1890.  bcc.s .Bumppast1
  1891.  add.w #256,d5 
  1892.  bra.s .Bumppast1
  1893.  
  1894. .BumpAcross:
  1895.  and.w d1,d5
  1896.  move.b (a0,d5.w*4),d0
  1897.  blt.s .BumpAcrossHigh
  1898.  
  1899.  move.w (a1,d0.w*2),a2
  1900.  lsr.b #1,d0
  1901.  bcc.s .BAL
  1902.  
  1903.  move.w a2,104*28(a3)
  1904.  move.w a2,104*24(a3)
  1905.  
  1906. .BAL:
  1907.  move.w a2,104*20(a3)
  1908.  move.w a2,104*16(a3)
  1909.  move.w a2,104*12(a3)
  1910.  move.w a2,104*8(a3)
  1911.  move.w a2,104*4(a3)
  1912.  bra.s .BAB
  1913.  
  1914. .BumpAcrossHigh:
  1915.  move.w (a1,d0.w*2),a2
  1916.  lsr.b #1,d0
  1917.  bcc.s .BAB
  1918.  move.w a2,104*8(a3)
  1919.  move.w a2,104*4(a3)
  1920.  
  1921. .BAB:
  1922.  move.w a2,(a3)
  1923.  
  1924.  addq #4,a3
  1925.  add.w a4,d3
  1926.  addx.l d2,d5
  1927.  dbcs d7,.BumpAcross
  1928.  dbcc d7,.BumpBefore
  1929.  bcc.s .Bumppast1
  1930.  add.w #256,d5 
  1931. .Bumppast1:
  1932.  
  1933.  move.w d4,d7
  1934.  bne.s .notdoneyet
  1935.  rts
  1936. .notdoneyet:
  1937.  
  1938.  cmp.w #32,d7
  1939.  ble.s .notoowide
  1940.  move.w #32,d7
  1941. .notoowide
  1942.  sub.w d7,d4  
  1943.  addq #4,a3
  1944.  
  1945.  dbra d7,.BumpAcross
  1946.  CACHE_FREEZE_ON d2
  1947.  rts
  1948.  
  1949.  
  1950. smooththefloor:
  1951.  move.l #14*128,d0
  1952.  divs dst,d0
  1953.  subq.w #1,d0
  1954.  blt ordinary
  1955. ; beq.s OneAbove
  1956.  subq.w #2,d0
  1957. ; blt TwoAbove
  1958. ; beq ThreeAbove
  1959.  subq.w #2,d0
  1960. ; blt FourAbove
  1961. ; beq FiveAbove
  1962.  subq.w #2,d0
  1963. ; blt SixAbove
  1964. ; beq SevenAbove
  1965.  
  1966. ; bra EightAbove
  1967.  
  1968.  moveq #0,d0
  1969.  rts
  1970.